package utils

import (
	"golang.org/x/crypto/bcrypt"
	"os"
	"path/filepath"
)

// HashPassword 对密码进行加密
// 参数:
//
//	password: 需要加密的原始密码
//
// 返回值:
//
//	string: 加密后的密码哈希值
//	error: 错误信息，如果加密失败
func HashPassword(password string) (string, error) {
	bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
	return string(bytes), err
}

// CheckPassword 验证密码是否正确
// 参数:
//
//	password: 原始密码
//	hash: 加密后的密码哈希值
//
// 返回值:
//
//	bool: 密码是否匹配
func CheckPassword(password, hash string) bool {
	err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
	return err == nil
}

// DeleteAvatar 删除头像
func DeleteAvatar(avatar string) error {
	filePath := filepath.Join("./img/avatar/", avatar)
	// 检查文件是否存在
	if _, err := os.Stat(filePath); os.IsNotExist(err) {
		return err
	}
	err := os.Remove(filePath)
	if err != nil {
		return err
	}
	return nil
}
